# SPDX-License-Identifier: GPL-2.0-only
#
# RCU-related debugging configuration options
#

menu "RCU Debugging"

config PROVE_RCU
	def_bool PROVE_LOCKING

config PROVE_RCU_LIST
	bool "RCU list lockdep debugging"
	depends on PROVE_RCU && RCU_EXPERT
	default n
	help
	  Enable RCU lockdep checking for list usages. By default it is
	  turned off since there are several list RCU users that still
	  need to be converted to pass a lockdep expression. To prevent
	  false-positive splats, we keep it default disabled but once all
	  users are converted, we can remove this config option.

config TORTURE_TEST
	tristate
	default n

config RCU_PERF_TEST
	tristate "performance tests for RCU"
	depends on DEBUG_KERNEL
	select TORTURE_TEST
	select SRCU
	select TASKS_RCU
	default n
	help
	  This option provides a kernel module that runs performance
	  tests on the RCU infrastructure.  The kernel module may be built
	  after the fact on the running kernel to be tested, if desired.

	  Say Y here if you want RCU performance tests to be built into
	  the kernel.
	  Say M if you want the RCU performance tests to build as a module.
	  Say N if you are unsure.

config RCU_TORTURE_TEST
	tristate "torture tests for RCU"
	depends on DEBUG_KERNEL
	select TORTURE_TEST
	select SRCU
	select TASKS_RCU
	default n
	help
	  This option provides a kernel module that runs torture tests
	  on the RCU infrastructure.  The kernel module may be built
	  after the fact on the running kernel to be tested, if desired.

	  Say Y here if you want RCU torture tests to be built into
	  the kernel.
	  Say M if you want the RCU torture tests to build as a module.
	  Say N if you are unsure.

config RCU_CPU_STALL_TIMEOUT
	int "RCU CPU stall timeout in seconds"
	depends on RCU_STALL_COMMON
	range 3 300
	default 21
	help
	  If a given RCU grace period extends more than the specified
	  number of seconds, a CPU stall warning is printed.  If the
	  RCU grace period persists, additional CPU stall warnings are
	  printed at more widely spaced intervals.

config RCU_TRACE
	bool "Enable tracing for RCU"
	depends on DEBUG_KERNEL
	default y if TREE_RCU
	select TRACE_CLOCK
	help
	  This option enables additional tracepoints for ftrace-style
	  event tracing.

	  Say Y here if you want to enable RCU tracing
	  Say N if you are unsure.

config RCU_EQS_DEBUG
	bool "Provide debugging asserts for adding NO_HZ support to an arch"
	depends on DEBUG_KERNEL
	help
	  This option provides consistency checks in RCU's handling of
	  NO_HZ.  These checks have proven quite helpful in detecting
	  bugs in arch-specific NO_HZ code.

	  Say N here if you need ultimate kernel/user switch latencies
	  Say Y if you are unsure

endmenu # "RCU Debugging"
